Java-তে JSON serialization এবং deserialization কাজ করার জন্য Jackson একটি জনপ্রিয় লাইব্রেরি। @JsonFormat এবং @JsonView দুটি গুরুত্বপূর্ণ Jackson এনোটেশন যা JSON serialization প্রক্রিয়া কাস্টমাইজ করতে ব্যবহৃত হয়।
1. @JsonFormat
@JsonFormat ব্যবহার করা হয় একটি ফিল্ডের ফরম্যাট কাস্টমাইজ করতে। এটি তারিখ এবং সময়, সংখ্যা ইত্যাদির ফরম্যাট নিয়ন্ত্রণ করতে কার্যকর।
উদাহরণ:
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
class User {
public String name;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss")
public Date registrationDate;
}
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.name = "John Doe";
user.registrationDate = new Date();
ObjectMapper objectMapper = new ObjectMapper();
String jsonOutput = objectMapper.writeValueAsString(user);
System.out.println(jsonOutput);
}
}
আউটপুট:
{
"name": "John Doe",
"registrationDate": "21-12-2024 15:30:00"
}
2. @JsonView
@JsonView ব্যবহার করা হয় বিভিন্ন দৃষ্টিভঙ্গি (views) অনুযায়ী JSON serialization নিয়ন্ত্রণ করতে।
ধাপসমূহ:
- একটি বা একাধিক ভিউ ইন্টারফেস তৈরি করুন।
- @JsonView এনোটেশন দিয়ে ফিল্ড বা মেথডে নির্ধারণ করুন কোন ভিউটি কোন তথ্য দেখাবে।
- ObjectMapper-কে কনফিগার করুন নির্দিষ্ট ভিউ ব্যবহার করার জন্য।
উদাহরণ:
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.ObjectMapper;
class Views {
public static class Public {}
public static class Internal extends Public {}
}
class Product {
@JsonView(Views.Public.class)
public String name;
@JsonView(Views.Internal.class)
public double price;
@JsonView(Views.Public.class)
public String description;
}
public class Main {
public static void main(String[] args) throws Exception {
Product product = new Product();
product.name = "Laptop";
product.price = 1200.99;
product.description = "High performance laptop";
ObjectMapper objectMapper = new ObjectMapper();
// Public view serialization
String publicJson = objectMapper.writerWithView(Views.Public.class).writeValueAsString(product);
System.out.println("Public View: " + publicJson);
// Internal view serialization
String internalJson = objectMapper.writerWithView(Views.Internal.class).writeValueAsString(product);
System.out.println("Internal View: " + internalJson);
}
}
আউটপুট:
Public View: {"name":"Laptop","description":"High performance laptop"}
Internal View: {"name":"Laptop","price":1200.99,"description":"High performance laptop"}
ব্যবহারিক ক্ষেত্র:
- @JsonFormat: তারিখ বা সংখ্যা প্রদর্শনের ফরম্যাট নিয়ন্ত্রণে (যেমন UI বা API রেসপন্সে)।
- @JsonView: API-তে বিভিন্ন ধরনের ক্লায়েন্ট বা ইউজারের জন্য আলাদা তথ্য প্রদর্শনে।
এগুলো ব্যবহার করে JSON serialization কাস্টমাইজ করা আরও সহজ এবং উন্নততর করা সম্ভব।
Content added By
Read more